From: Gianni Tedesco Date: Tue, 17 Aug 2010 16:23:25 +0000 (+0100) Subject: tools/libxl: fix leak in libxl_wait_for_backend() X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~11618 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=299ac6622b7c89db1de33627dd680862eacda394;p=xen.git tools/libxl: fix leak in libxl_wait_for_backend() Another leak was been introduced since the gc patch-set. Signed-off-by: Gianni Tedesco Signed-off-by: Ian Jackson --- diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c index 7a8c4fcbc4..1fc81ce316 100644 --- a/tools/libxl/libxl_device.c +++ b/tools/libxl/libxl_device.c @@ -457,6 +457,7 @@ int libxl_wait_for_backend(libxl_ctx *ctx, char *be_path, char *state) unsigned int len; char *p; char *path = libxl_sprintf(&gc, "%s/state", be_path); + int rc = -1; while (watchdog > 0) { p = xs_read(ctx->xsh, XBT_NULL, path, &len); @@ -468,10 +469,11 @@ int libxl_wait_for_backend(libxl_ctx *ctx, char *be_path, char *state) XL_LOG_ERRNO(ctx, XL_LOG_ERROR, "Failed to access backend %s", be_path); } - return -1; + goto out; } else { if (!strcmp(p, state)) { - return 0; + rc = 0; + goto out; } else { usleep(100000); watchdog--; @@ -479,7 +481,8 @@ int libxl_wait_for_backend(libxl_ctx *ctx, char *be_path, char *state) } } XL_LOG(ctx, XL_LOG_ERROR, "Backend %s not ready", be_path); +out: libxl_free_all(&gc); - return -1; + return rc; }